package com.sky.utils;

public class StringUtil {

    /**
     * 检查字符串是否为 null 或空
     *
     * @param str 要检查的字符串
     * @return 如果字符串为 null 或 ""，返回 true，否则返回 false
     */
    public static boolean isEmpty(String str) {
        return str == null || str.trim().isEmpty();
    }

    /**
     * 将字符串首字母大写
     *
     * @param str 要处理的字符串
     * @return 首字母大写的字符串
     */
    public static String capitalize(String str) {
        if (isEmpty(str)) {
            return str;
        }
        return str.substring(0, 1).toUpperCase() + str.substring(1);
    }

    /**
     * 将字符串反转
     *
     * @param str 要反转的字符串
     * @return 反转后的字符串
     */
    public static String reverse(String str) {
        if (isEmpty(str)) {
            return str;
        }
        return new StringBuilder(str).reverse().toString();
    }

    /**1
     * 检查两个字符串是否相等（忽略大小写）
     *test
     * @param str1 第一个字符串
     * @param str2 第二个字
     * @return 如果两个字符串相等（忽略大小写），返回 true，否则返回 false
     */
    public static boolean equalsIgnoreCase(String str1, String str2) {
        if (str1 == null) {
            return str2 == null;
        }
        return str1.equalsIgnoreCase(str2);
    }

    /**
     * 统计字符串中某个字符出现的次数
     *
     * @param str   要处理的字符串
     * @param ch    要统计的字符
     * @return 字符在字符串中出现的次数
     */
    public static int countChar(String str, char ch) {
        if (isEmpty(str)) {
            return 0;
        }
        int count = 0;
        for (char c : str.toCharArray()) {
            if (c == ch) {
                count++;
            }
        }
        return count;
    }

    /**
     * 将字符串中的空格替换为指定字符
     *
     * @param str      要处理的字符串
     * @param replaceWith 替换的字符
     * @return 替换后的字符串
     */
    public static String replaceSpaces(String str, String replaceWith) {
        if (isEmpty(str)) {
            return str;
        }
        return str.replace(" ", replaceWith);
    }
}